const userService = require('../service/user.service')

class UserController {
  async create(ctx, next) {
    // 1.获取用户传递过来的信息
    const user = ctx.request.body
  
    // 2.将user信息存储到数据库中
    const result = await userService.create(user)
    
    // 3.查看存储的结果, 返回结果
    ctx.body = {
      code: 0,
      message: '创建用户成功~',
      data: result
    }
  }

  async findUser(ctx, next) {
    // 1.验证用户id是否存在的中间件会存储到ctx.user中，可以先尝试获取user
    let user = ctx.user

    // 2.如果未执行验证用户id存在的中间件，即user为空，则从数据库中查询
    user = user || await userService.findUserById(ctx.params.id)

    // 3.返回查询结果
    ctx.body = {
      code: 0,
      message: '查询用户成功~',
      data: user
    }
  }

  async findUserList(ctx, next) {
    // 1.获取limit offset数据
    let { limit, offset, roleId } = ctx.query

    if (!limit) limit = 10
    if (!offset) offset = 0
    if (!roleId) roleId = 2

    // 2.查询数据库
    const result = await userService.findUserList({ limit, offset, roleId })

    // 3.返回查询结果
    ctx.body = {
      code: 0,
      message: '查询用户成功~',
      data: result
    }
  }

  async updateUser(ctx, next) {
    // 1.获取用户传递过来的信息
    const user = ctx.request.body

    // 2.将user信息存储到数据库中
    const result = await userService.updateUser(user)

    // 3.查看存储的结果, 返回结果
    ctx.body = {
      code: 0,
      message: '更新用户信息成功 ~',
      data: result
   }
  }

  async deleteUser(ctx, next) {
    // 1.获取用户传递过来的信息
    const { id } = ctx.request.body

    // 2.将user信息存储到数据库中
    const result = await userService.deleteUser(id)

    // 3.查看存储的结果, 返回结果
    ctx.body = {
      code: 0,
      message: '删除用户成功 ~',
      data: result
    }
  }
}

module.exports = new UserController()